package com.yinxin.annotation;

import java.lang.annotation.*;

//测试元注解
@MyAnnotation(school = {"清华大学"})
public class Test02 {
   //注解可以显示赋值，如果没有默认值，我们就必须给注解赋值
   @MyAnnotation(name = "yinxin",school = {"合工大","西工大"})
   public void test(){
   }
   //当参数是value()时候可以省略value，当参数是name()可以省略name
   @MyAnnotation2("value")
   public void test2(){
   }
}
//定义一个元注解
//Target 表示注解能用在哪些地方
//Retention 表示我们的注解在什么地方还有效RUNTIME>CLASS>SOURCE:分别对应运行期，编译期，源码级
//Documented 表示是否将我们的注解生成在JAVAdoc中
//Inherited 子类可以继承父类中的该注解
@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@interface MyAnnotation{
   //注解的参数：参数类型+参数名();
   String name() default "";
   int age() default 0;
   int id() default -1;//如果默认值为-1，代表不存在
   String[] school();
}
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@interface MyAnnotation2{
   String value();
}